﻿package com.gengine.utils
{
    import flash.utils.*;

    public class ObjectParser extends Object
    {

        public function ObjectParser()
        {
            return;
        }// end function

        public static function toClass(param1:Object, param2:Class)
        {
            var _loc_3:* = new param2;
            putObject(param1, _loc_3);
            return _loc_3;
        }// end function

        public static function putObject(param1:Object, param2:Object) : void
        {
            var _loc_3:* = undefined;
            for (_loc_3 in param1)
            {
                
                if (param2.hasOwnProperty(_loc_3))
                {
                    param2[_loc_3] = param1[_loc_3];
                }
            }
            return;
        }// end function

        public static function isObjectTheSameValue(param1:Object, param2:Object) : Boolean
        {
            var _loc_3:* = undefined;
            for each (_loc_3 in param1)
            {
                
                if (param1[_loc_3] != param2[_loc_3])
                {
                    return false;
                }
            }
            return true;
        }// end function

        public static function duplicate(param1:Object) : Object
        {
            var _loc_3:* = undefined;
            var _loc_2:* = new Object();
            for (_loc_3 in param1)
            {
                
                _loc_2[_loc_3] = param1[_loc_3];
            }
            return _loc_2;
        }// end function

        public static function getClassVars(param1:Object, param2:Boolean = true) : Array
        {
            var _loc_5:XML = null;
            var _loc_6:* = undefined;
            var _loc_3:Array = [];
            var _loc_4:* = describeType(param1);
            if (_loc_4)
            {
                _loc_6 = _loc_4.variable;
                if (_loc_6)
                {
                    for each (_loc_5 in _loc_6)
                    {
                        
                        _loc_3.push(_loc_5.attribute("name")[0].toString());
                    }
                }
                if (param2)
                {
                    _loc_6 = _loc_4.accessor;
                    if (_loc_6)
                    {
                        for each (_loc_5 in _loc_6)
                        {
                            
                            _loc_3.push(_loc_5.attribute("name")[0].toString());
                        }
                    }
                }
            }
            return _loc_3;
        }// end function

    }
}
